In the field of printing, users prefer systems that allow for flexible processing of print jobs, which typically comprise print data received in the form of a page description language (PDL). A PDL data stream typically includes attributes that assist in defining processing steps that may be performed for the print job. Upon receiving a PDL data stream, a printer controller selects an appropriate input tray from which to print a job included within the PDL data stream. Subsequently, the controller takes an appropriate action depending on a degree to which the content of the tray matches the job requirement. Exemplary actions include prompting a user to load a required media, or aborting the job.
In some instances a job may specify a particular tray. Only an appropriate action needs to be determined in such instances. However, when a job does not specify a tray an appropriate tray needs to be selected. Additionally, the selection of trays and actions may vary depending on print fidelity (e.g., how to process a job when the requirements do not match completely).
Typically, two types of fidelity are considered: fail-job and print-anyway. In fail-job fidelity, job requirements must be completely satisfied in order to print the job, while in print-anyway fidelity some requirements may be compromised to print the job. The various contexts and variables render the logic of tray selection and determination of action complex and difficult to maintain. Moreover, customers often request changes in the behavior of tray selection and prompting for media, which require significant effort to implement.
Accordingly, a mechanism to model tray selection and determine appropriate actions is desired.